Check out our Root admin template!

A minimalistic, low-level CSS framework

A low-level, lightweight and modern CSS system, authoring tool built on Sass. Give your project a solid foundation.

@forward 'header';
@forward 'footer';
@use 'sprucecss/scss/spruce' as *;

.site-footer {
  background-color: color('background', 'footer');
  padding-block: spacer-clamp('xl', 'xxl');

  &__top {
    @include layout-grid('l', 14rem);
  }

  &__logo {
    --dimension: 4rem;
    block-size: var(--dimension);
    display: inline-flex;
    inline-size: var(--dimension);
  }

  &__title {
    font-size: font-size('h4');
    margin-block: 0 spacer('m');
  }

  &__navigation {
    @include clear-list;
    @include layout-stack('xs');

    a {
      color: color(text);
      text-decoration: none;

      &:hover,
      &:focus,
      &:active,
      &[aria-current='page'] {
        color: color('primary');
      }

      &[aria-current='page'] {
        font-weight: 700;
      }
    }
  }

  &__bottom {
    padding-block-start: spacer('l');

    @include breakpoint('md') {
      align-items: center;
      display: flex;
      gap: spacer('s');
      justify-content: space-between;
    }
  }

  &__copyright {
    margin-block: 0;
  }
}
@use 'sprucecss/scss/spruce' as *;

.site-header {
  position: relative;

  &__inner {
    --block-size: 6rem;
    align-items: center;
    block-size: var(--block-size);
    display: flex;
    flex-wrap: wrap;
    gap: spacer-clamp('s', 'l');
    justify-content: space-between;
  }

  &__column {
    align-items: center;
    display: flex;
    flex-grow: 1;
    gap: spacer-clamp('s', 'l');
  }

  &__actions {
    align-items: center;
    display: flex;
    gap: spacer-clamp('s', 'm');
  }

  &__logo {
    --dimension: 4rem;
    block-size: var(--dimension);
    display: inline-flex;
    inline-size: var(--dimension);
  }

  &__email {
    display: none;
    text-decoration: none;

    @include breakpoint('sm') {
      display: inline-block;
    }
  }

  &__navigation {
    margin-inline-start: auto;

    @include breakpoint('md') {
      margin-inline-start: 0;
    }

    ul {
      border-block-start: 1px solid color('border');

      @include breakpoint('sm') {
        border-block: none;
      }
    }
  }
}
@use 'dark-colors' as dark;

@use 'sprucecss/scss/spruce' with (
  $colors: (
    'footer': (
      'background': hsl(215deg 100% 98%),
    )
  ),
  $dark-colors: dark.$colors,
  $typography: (
    'font-family-base': #{'Open Sans', sans-serif},
    'font-family-heading': #{'Manrope', sans-serif},
  ),
);
@use 'sass:color';

$color-black: hsl(206deg 100% 7%);
$color-danger: hsl(0deg 71% 51%);
$color-gray-dark: hsl(0deg 0% 100% / 8%);
$color-gray: hsl(0deg 0% 97%);
$color-primary: hsl(261deg 54% 70%);
$color-secondary: hsl(227deg 92% 55%);
$color-success: hsl(150deg 100% 33%);
$color-white: hsl(0deg 0% 95%);

$colors: (
  'base': (
    'background': $color-black,
    'blockquote-border': $color-primary,
    'border': $color-gray-dark,
    'code-background': hsl(207deg 64% 18%),
    'code-foreground': $color-white,
    'heading': $color-white,
    'link': $color-primary,
    'link-hover': color.scale($color-primary, $lightness: 20%),
    'mark-background': hsl(50 100% 80%),
    'mark-foreground': $color-black,
    'marker': $color-primary,
    'primary': $color-primary,
    'secondary': $color-secondary,
    'text': $color-gray,
  ),
  'btn': (
    'primary-background': hsl(261 52% 59%),
    'primary-background-hover': hsl(261 52% 65%),
    'primary-foreground': $color-white,
    'secondary-background': $color-secondary,
    'secondary-background-hover': color.adjust($color-secondary, $lightness: 5%),
    'secondary-foreground': $color-white,
  ),
  'footer': (
    'background': hsl(206deg 100% 5%),
  ),
  'form': (
    'background': color.scale($color-black, $lightness: 5%),
    'background-disabled': $color-black,
    'border': $color-gray-dark,
    'border-disabled': $color-gray-dark,
    'border-focus': $color-primary,
    'check-background': $color-primary,
    'check-focus-ring': $color-primary,
    'check-foreground': $color-black,
    'invalid': $color-danger,
    'invalid-focus-ring': color.adjust($color-danger, $alpha: -0.75),
    'label': $color-white,
    'legend': $color-white,
    'placeholder': hsl(0deg 0% 60%),
    'range-thumb-background': $color-primary,
    'range-thumb-focus-ring': $color-primary,
    'range-track-background': hsl(206deg 100% 20%),
    'ring-focus': color.adjust($color-primary, $alpha: -0.75),
    'select-foreground': hsl(0deg 0% 100%),
    'text': $color-gray,
    'valid': $color-success,
    'valid-focus-ring': color.adjust($color-success, $alpha: -0.75),
  ),
  'selection': (
    'background': $color-primary,
    'foreground': $color-white,
  ),
  'scrollbar': (
    'thumb-background': hsl(0deg 0% 100% / 15%),
    'thumb-background-hover': hsl(0deg 0% 100% / 25%),
    'track-background': hsl(0deg 0% 100% / 5%),
  ),
  'table': (
    'border': $color-gray-dark,
    'caption': $color-gray,
    'heading': $color-white,
    'hover': hsl(0deg 0% 100% / 5%),
    'text': $color-gray,
    'stripe': hsl(0deg 0% 100% / 2.5%),
  )
);
@use 'sprucecss/scss/spruce' as *;

@include generate-color-variables(
  $dark-colors,
  ':root[data-theme-mode="dark"]'
);

[data-theme-mode='dark'] {
  color-scheme: dark;
}
@use 'sprucecss/scss/spruce' as *;

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-regular.woff2'
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-300.woff2',
  300
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-600.woff2',
  600
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-700.woff2',
  700
);

@include font-face(
  'Manrope',
  '../../font/manrope-v13-latin_latin-ext-800.woff2',
  800
);

@include font-face(
  'Open Sans',
  '../../font/open-sans-v34-latin_latin-ext-regular.woff2'
);

@include font-face(
  'Open Sans',
  '../../font/open-sans-v34-latin_latin-ext-700.woff2',
  700
);
@forward 'config';
@forward 'fonts';
@forward 'styles';
@forward 'dark-mode';
@use 'sprucecss/scss/spruce' as *;

@include generate-styles;
@forward 'config';
@forward 'component';

Documentation

Learn about Spruce CSS through our extensive documentation.

Components

Explore our extensive UI library built with Spruce CSS.

Blog

Read about front-end development and concepts of Spruce CSS.

Good to Know

Spruce CSS in nutshell.

Find us on GitHub

Did you find a bug? Have an idea or a question? Please open an issue to help us develop the project.